A virtual machine is a computer system having a state that is abstracted in software. Virtually any application that can be executed on a physical computer system can be executed in a virtual machine using virtualization software. Virtualization software is software that is logically interposed and interfaces with a virtual machine and the physical computer system. Each virtual machine runs an operating system, referred to herein as the “guest OS” and applications.
VMware Inc. of Palo Alto, Calif., and other virtualization software companies, make available virtual machine (VM) “players” that allow a user to run a VM on commodity host platform such as an x86 processor with Windows or OS/X from Apple Computer of Cupertino, Calif. The VM may be virtually any operating system compatible with x86 architectures or derivatives thereof (e.g., IA-32, IA-64, AMD64, x86-64, etc.).
The player therefore allows a user to access a desktop provided by a VM on the commodity host platform. The user accesses the virtual machine through a user interface that presents the virtual machine desktop to the user, e.g., either in a full screen view or in a window on the host's desktop.
It is also possible to use a remote desktop client to access a virtual machine remotely. A remote desktop client is a computer program that communicates user interface information with a remote computer system. Generally, the user interface information includes display data, which is received from the remote computer system and displayed on the computer local to the user, and sends keyboard and mouse inputs generated by the user to the remote computer system. In this way, applications executing remotely from the user can be accessed and interacted with by the user. Remote desktop clients are typically used to access a remote desktop server, which may be a software component of the operating system of the remote computer system being accessed, or an application running on the remote computer system. Example protocols include Remote Desktop Protocol (RDP) by Microsoft, Virtual Network Computing (VNC), which has multiple implementations by several open source and commercial software houses, and Independent Computing Architecture (ICA), which is created by Citrix, Inc. Although originally created to access physical computer systems, remote desktop clients have also been used to access the desktops of virtual machines.
As with the virtual machine player, the remote desktop client presents the desktop of the remote computer system using the full screen of the user's computer system, or in a window on the user's display. Because remote desktop clients package the display contents and other information for network communication, remote desktop clients generally provide a degraded user experience from the experience of a local user directly accessing a computer system. This is particularly the case where the application being accessed generates rich graphics (e.g., video or three-dimensional graphics) or the latencies are increased due to the distance between the remote desktop client and server.